﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TencentMapSdk.Entity
{
    /// <summary>
    /// 创建数据
    /// </summary>
    public class CloudCreateData
    {
        /// <summary>
        /// 开发者key
        /// </summary>
        [JsonProperty("key")]
        public string Key { get; set; }
        /// <summary>
        /// 每个数组项为一条数据(最多可一次请求创建20条)
        /// </summary>
        [JsonProperty("data")]
        public List<CloudData> Data { get; set; }
        /// <summary>
        /// 表id，即表的唯一标识
        /// </summary>
        [JsonProperty("table_id")]
        public string TableId { get; set; }
    }

    /// <summary>
    /// 表数据
    /// </summary>
    public class CloudData
    {
        /// <summary>
        /// 主键/标识，数据创建时自动生成，全库不重复
        /// </summary>
        [JsonProperty("id")]
        public string Id { get; set; }
        /// <summary>
        /// 即自定义ID（user defined id) ，若您已有库表数据ID或编号，可填入此字段，以便关联管理。--
        /// 唯一性约束：
        /// 1.可在建表时设置是否启用ud_id的唯一性约束（表创建后不可更改）
        /// 2.启用唯一性约束后，ud_id值将不可重复，同时将支持通过ud_id进行数据的更新、删除，否则仅可用于搜索筛选
        /// </summary>
        [JsonProperty("ud_id")]
        public string UdId { get; set; }
        /// <summary>
        /// 地点名称
        /// </summary>
        [JsonProperty("title")]
        public string Title { get; set; }
        /// <summary>
        /// 地址
        /// </summary>
        [JsonProperty("address")]
        public string Address { get; set; }
        /// <summary>
        /// 坐标
        /// </summary>
        [JsonProperty("location")]
        public Location? Location { get; set; }
        /// <summary>
        /// 多边形轮廓坐标串，格式：
        /// lat,lng;lat,lng;……
        /// 限制外接矩形面积小于30万平方公里 （约比广西省稍大）
        /// </summary>
        [JsonProperty("polygon")]
        public string Polygon { get; set; }
        /// <summary>
        /// 电话
        /// </summary>
        [JsonProperty("tel")]
        public string Tel { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        [JsonProperty("create_time")]
        public long? CreateTime { get; set; }
        /// <summary>
        /// 修改时间
        /// </summary>
        [JsonProperty("update_time")]
        public long? UpdateTime { get; set; }
        /// <summary>
        /// 省，系统自动生成
        /// </summary>
        [JsonProperty("province")]
        public string Province { get; set; }
        /// <summary>
        /// 市，系统自动生成
        /// </summary>
        [JsonProperty("city")]
        public string City { get; set; }
        /// <summary>
        /// 	区，系统自动生成
        /// </summary>
        [JsonProperty("district")]
        public string District { get; set; }
        /// <summary>
        /// 行政区划代码
        /// </summary>
        [JsonProperty("adcode")]
        public int? AdCode { get; set; }
        /// <summary>
        /// 距离，单位：米，使用distance函数时会返回该字段
        /// </summary>
        [JsonProperty("_distance")]
        public int? Distance { get; set; }
        /// <summary>
        /// 自定义字段：
        /// </summary>
        [JsonProperty("x")]
        public Dictionary<string, object> X { get; set; }
    }

    /// <summary>
    /// 创建数据响应
    /// </summary>
    public class CloudCreateDataResult
    {
        /// <summary>
        /// 创建成功的数据条数
        /// </summary>
        [JsonProperty("count")]
        public int Count { get; set; }
        /// <summary>
        /// 创建失败的数据信息（您可根据其错误信息进行更正）
        /// </summary>
        [JsonProperty("failure")]
        public List<CloudCreateDataFailure> Failure { get; set; }
        /// <summary>
        /// 创建成功的数据
        /// </summary>
        [JsonProperty("success")]
        public List<CloudCreateDataSuccess> Success { get; set; }
    }

    /// <summary>
    /// 创建数据成功信息
    /// </summary>
    public class CloudCreateDataSuccess
    {
        /// <summary>
        /// 数据创建成功，返回系统生成的唯一标识（id）
        /// </summary>
        [JsonProperty("id")]
        public string Id { get; set; }
        /// <summary>
        /// 该条数据在data数组中的下标位置（从0开始）
        /// </summary>
        [JsonProperty("row_idx")]
        public int RowIdx { get; set; }
        /// <summary>
        /// 自定义id
        /// </summary>
        [JsonProperty("ud_id")]
        public string UdId { get; set; }
    }

    /// <summary>
    /// 创建数据失败信息
    /// </summary>
    public class CloudCreateDataFailure
    {
        /// <summary>
        /// 创建该条数据时产生的错误信息
        /// </summary>
        [JsonProperty("message")]
        public string Message { get; set; }
        /// <summary>
        /// 该条数据在data数组中的下标位置（从0开始）
        /// </summary>
        [JsonProperty("row_idx")]
        public int RowIdx { get; set; }
        /// <summary>
        /// 创建该条数据时产生的错误信息
        /// </summary>
        [JsonProperty("status")]
        public int Status { get; set; }
        /// <summary>
        /// 创建该条数据时产生的错误信息
        /// </summary>
        [JsonProperty("ud_id")]
        public string UdId { get; set; }
    }
}
